<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <script>
    /*
      封装方法
        + 需求: 根据我的条件对原始数组进行过滤, 把原始数组中满足我条件的所有项拿出来
               组成一个新的数组返回
        + 例子:
          => 原始数组 [ 10, 20, 30, 40 ]
          => 条件 > 20
          => 结果 [ 30, 40 ]

      filter
        + 语法: 数组.filter(function (item, index, arr) {})
        + 返回值: 一个新的数组
          => 原始数组中满足条件的项
          => 在回调函数中以 return 的形式书写 过滤条件
    */

    // 1. 准备方法
    // Array.prototype.myFilter = function (cb) {
    //   // 1-1. 准备一个新的数组
    //   var ary = []

    //   // 1-2. 根据 回调函数 的条件, 向 新数组内 添加成员
    //   for (var i = 0; i < this.length; i++) {
    //     // 需要调用 cb
    //     var r = cb(this[i], i, this)

    //     // ary.push(this内满足条件的项)
    //     r && ary.push(this[i])
    //   }

    //   // 1-3. 返回新数组
    //   return ary
    // }

    // // 2. 将来使用的时候
    // var arr = [ 10, 20, 30, 40 ]
    // var res = arr.filter(function (item, index, arr) {
    //   // 过滤条件
    //   return item > 20
    // })

    // console.log('原始数组 : ', arr)
    // console.log('过滤以后 : ', res)


  </script>
</body>
</html>
